home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / RTLib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-30  |  2.5 KB  |  126 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        RTLib.h
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. */
  11.  
  12. #ifndef __RTLib__
  13. #define __RTLib__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. #endif
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /*        Error Codes        */
  24.  
  25. enum { eRTNoErr=0, eRTBadVersion=2, eRTInvalidOp=4, eRTInvalidJTPtr=6 };
  26.  
  27.  
  28. /*        Action Codes        */
  29.  
  30. enum { kRTSysErr=0, kRTRetry=1, kRTContinue=2 };
  31.  
  32.  
  33. /*        Runtime Operations        */
  34.  
  35. enum    {    kRTGetVersion=10,        kRTGetVersionA5=11,
  36.              kRTGetJTAddress=12,    kRTGetJTAddressA5=13,
  37.              kRTSetPreLoad=14,        kRTSetPreLoadA5=15,
  38.              kRTSetSegLoadErr=16,    kRTSetSegLoadErrA5=17,
  39.              kRTSetPostLoad=18,    kRTSetPostLoadA5=19,
  40.              kRTSetPreUnload=20,    kRTSetPreUnloadA5=21,
  41.              kRTPreLaunch=22,        kRTPostLaunch=23
  42.         };
  43.  
  44.  
  45. /*        Version and Jump Table Entry Address Parameters        */
  46.  
  47. struct RTGetVersionParam {
  48.     unsigned short    fVersion;
  49. };
  50.  
  51. typedef struct RTGetVersionParam RTGetVersionParam;
  52.  
  53.  
  54. struct RTGetJTAddrParam {
  55.     void*    fJTAddr;
  56.     void*    fCodeAddr;
  57. };
  58.  
  59. typedef struct RTGetJTAddrParam RTGetJTAddrParam;
  60.  
  61.  
  62. /*        RTState Definition        */
  63.  
  64. struct RTState {
  65.     unsigned short    fVersion;                /* run-time version */
  66.     void*                fSP;                        /* SP: &-of user return address */
  67.     void*                fJTAddr;                    /* PC: &-of called jump table entry */
  68.     long                fRegisters[15];        /* registers D0-D7 and A0-A6 when */
  69.                                                     /*        _LoadSeg was called */
  70.     short                fSegNo;                    /*    segment number */
  71.     ResType            fSegType;                /*    segment type (normally 'CODE') */
  72.     long                fSegSize;                /*    segment size */
  73.     Boolean            fSegInCore;                /*    true if segment is in memory */
  74.     Boolean            fReserved1;                /* (reserved for future use) */
  75.     OSErr                fOSErr;                    /*    error number */
  76.     long                fReserved2;                /* (reserved for future use) */
  77. };
  78.  
  79. typedef struct RTState RTState;
  80.  
  81.  
  82. /*        Version Definitions        */
  83.  
  84. #define    kVersion32bit            0xFFFF            
  85. #define    kVersion16bit            0x0000                    
  86.  
  87.  
  88. /*        User Handler Definition        */
  89.  
  90. typedef pascal short (*SegLoadHdlrPtr) (RTState* state);
  91.  
  92.  
  93. /*        Segment Loader Hook Parameters        */
  94.  
  95. struct RTSetSegLoadParam {
  96.     SegLoadHdlrPtr    fUserHdlr;
  97.     SegLoadHdlrPtr    fOldUserHdlr;
  98. };
  99.  
  100. typedef struct RTSetSegLoadParam RTSetSegLoadParam;
  101.  
  102.  
  103. /*        Runtime Parameter Block        */
  104.  
  105. struct RTPB {
  106.     short    fOperation;
  107.     void*    fA5;
  108.     union    {
  109.         RTGetVersionParam    fVersionParam;
  110.         RTGetJTAddrParam    fJTAddrParam;
  111.         RTSetSegLoadParam    fSegLoadParam;
  112.     } fRTParam;
  113. };
  114.  
  115. typedef struct RTPB RTPB;
  116.  
  117. pascal OSErr Runtime (RTPB* runtime_parms);
  118.  
  119.  
  120. #ifdef __cplusplus
  121. }
  122. #endif
  123.  
  124. #endif    /* __RTLib__ */
  125.  
  126.